/*
 * @Author: 0x9DEFA478
 * @Date: 2023-02-21 20:08:08
 * @LastEditTime: 2023-02-25 21:38:07
 * @LastEditors: 0x9DEFA478
 * @Description: 
 * QQ:2652450237
 * ============================================================================================================================================
 * 
 * 
 * 
 *                                                                                               ************      ****************************
 *                                                                                             ************      ****************************  
 *                                                                                           ************      ****************************    
 *                                                                                         ************      ****************************      
 *                                                                                       ************      ************                        
 *                                                                                     ************      ************                          
 *                                                                                   ************      ************                            
 *                                                                                 ************      ************                              
 *                                                                               ************      ************                                
 *                                                                             ************      ************                                  
 *                                                                           ************      ************                                    
 *                                                                         ************      ************                                      
 *                                                                       ************      ************                                        
 *                                                                     ************      ************                                          
 *                                                                   ************      ************                                            
 *                                                                 ************      ************                                              
 *                                                               ************      ************                                                
 *                                                             ************      ************                                                  
 *                                                           ************      ************                                                    
 *                                                         ************      ************                                                      
 *                                                       ************      ************                                                        
 *                                                     ************      ************                                                          
 *                                                   ************      ************                                                            
 *                                                 ************      ************                                                              
 *                                               ************      ************                                                                
 *                                             ************      ************                                                                  
 *                                           ************      ************                                                                    
 *                                         ************      ************                                                                      
 *                                       ************      ************                                                                        
 *                                     ************      ************                                                                          
 *                                   ************      ************                                                                            
 *                                 ************      ************                                                                              
 *                               ************      ************                                                                                
 *                             ************      ************                                                                                  
 *                           ************      ************                                                                                    
 *                         ************      ************                                                                                      
 *       ****************************      ************                                                                                        
 *     ****************************      ************                                                                                          
 *   ****************************      ************                                                                                            
 * ****************************      ************                                                                                              
 * 
 * 
 * 
 * ============================================================================================================================================
 * 
 */
#ifndef __ListviewPinAssignment_H_
#define __ListviewPinAssignment_H_
#include <QListView>
#include <QStandardItemModel>




class ListviewPinAssignment:public QListView{
    Q_OBJECT
  public:

    class Function{
      public:
        Function(){}

        Function(const Function& function){
          SetParam(function);
        }

        Function(const QString& Name,void* v,const QBrush& BgColor){
          
          SetParam(Name,v,BgColor);

        }

        ~Function(){}

        void SetParam(const QString& Name,void* v,const QBrush& BgColor){
          
          this->v=v;
          this->name=Name;
          this->bgColor=BgColor;

        }

        void SetParam(const Function& function){
          
          this->v=function.v;
          this->name=function.name;
          this->bgColor=function.bgColor;

        }

        void* V()const{
          return v;
        }

        const QString& Name()const{
          return name;
        }
        QString Name(){
          return name;
        }
        
        const QBrush& BgColor()const{
          return bgColor;
        }
        QBrush& BgColor(){
          return bgColor;
        }

      private:
        void* v;
        QString name;
        QBrush bgColor;
    };

    explicit ListviewPinAssignment(QWidget *parent = nullptr);
    ~ListviewPinAssignment();

    void SetData(const QList<Function*>& data);
    void SetData(const QList<Function*>&& data){SetData(data);}

    void SetSearchText(const QString& s){setSearchText(s);SearchText=s;}
    void SetSearchText(const QString&& s){SetSearchText(s);}


  
  signals:
    void Clicked(void* v);

  
  private slots:
    // void SlotContextMenu(QPoint pos);
    void SlotClicked(const QModelIndex& index);
    
  private:
    QStandardItemModel* Model;
    Function* Functions;
    int NumberFunction;
    QString SearchText;
    QList<Function*> ShowFunction;

  void setSearchText(const QString& s);
  
};



#endif //__ListviewPinAssignment_H_
